ユーザープログラムからのＳＣＳＩドライバ(TGFX.SYS)のアクセス


<イントロダクション>

SCSIのターゲットモードをサポート
CDエミュレーター等ではSCSIのターゲットモードを使用するが、従来のエミュレーター
では機種依存の部分が完全には分離しておらず、また、SCSIの機能のサブセットしか取
り扱うことしかできない。そのために、SCSIのチップセットに依存せず、SCSIの機能が
自由に使用できるインターフェイスが必要になります。
このドライバはそれらの要求を実現するための機能を提供します。


サポートするSCSI
	ANSI SCSI-2をサポート可能。ただし以下の制限あります。
		同期転送はサポートしていません。
		WIDE SCSIはサポートしていません。


<使用方法>

ユーザープログラムがこのドライバを使用する場合、次のように行ないます。
	１．ターゲットマネージャのエントリーポイントを取得する。
	２．ターゲットマネージャのファンクションをコールする。


１．ターゲットマネージャのエントリーポイントの取得
ターゲットマネージャにアクセスしようとするプログラムは次の例にならって、DOS
コールをおこない、ドライバをオープンします。

INP:		AX	3D00h
		DS:DX	'TGMSCSI$'へのポインタ

OUT:		AX	キャリーフラグがセットされていなければファイルハンドル
			キャリーフラグがセットされている場合はエラーコード

エントリーポイントの取得
以下の様にしてDOSコールをおこなってエントリーポイントを取得します。
INP:		AX	4402h
		DS:DX	リターンデータを格納するメモリーへのポインタ(4バイト)
		CX	4
		BX	ファイルハンドル

OUT:		AX	なし

DS:DXで返ってくるデータにターゲットマネージャのエントリーポイントが格納され
ています。
	+00h	ターゲットマネージャのオフセットアドレス
	+01h	ターゲットマネージャのセグメントアドレス

ターゲットマネージャのクローズ
ターゲットマネージャのエントリーポイントを取得したユーザープログラムはドライ
バをクローズしなければなりません。
INP:	AH	3eh
	BX	ファイルハンドル

OUT:	AX	キャリーフラグがセットされているばあいはエラーコード
		キャリーフラグがセットされていなければ正常終了


２．ターゲットマネージャのファンクションをコール
マネージャをコールする場合、以下の例にしたがって下さい。
	.model small

DATA	segment public 'DATA'
TGMSCSI_STRING	label byte
	db	'TGMSCSI$'
	db	0

ASTI_Entry	label dword
	dd	0
STRB	db	32 dup (0)
DATA ends

CODE	segment public 'CODE'
	assume cs:CODE,DS:DATA
start:
	mov ax,@DATA
	mov ds,ax
	mov ax,03d00h
	mov dx,offset ds:TGMSCSI_STRING
	int 21h
	jc	NoASTIManager
	push ax

	mov bx,ax
	mov ax,4402h
	mov dx,offset ds:ASTI_Entry
	mov cx,4
	int 21h

	mov ah,03eh
	pop	bx
	int 21h

	push ds
	mov bx,offset ds:STRB
	push bx
	mov bx,offset ds:ASTI_ENTRY
	call dword ptr ds:[bx]
	add sp,4
ASTI_Exit:
	mov ax,4c00h
	int 21h
	ret
NoASTIManager:
	jmp	ASTI_Exit

CODE	ends

STRB(SCSIターゲットモード マネージャ リクエスト ブロック)のセグメントとオフセ
ットをスタックにつみ、その後ドライバをコールします。


<SCSIターゲットモード マネージャ リクエスト ブロック>

SCSIターゲットモード マネージャ リクエスト ブロックはASTIマネージャーにより実
行されるコマンドを保持しており、ドライバとユーザープログラムの両方から参照され
ます。
STRBはSTRBヘッダと、その後に続くコマンドコードに依存したブロックから構成されま
す。

STRBリクエストヘッダは３バイトのブロックであり、以下の様に定義されます。
オフセット	バイト		内容
00h		01h		コマンドコード
01h		01h		ステータス
02h		01h		ホストアダプター番号


+00 コマンドコード
どのASTI機能を使用するかを指定するために使用します。


ASTIコマンドコード
00	ホストアダプタの問い合わせ
01	システム情報の取得
02	SCSI I/Oリクエストの実行
03	SCSI I/Oリクエストの中止
04	SCSIデバイスのリセット
05	デバイス／システムのパラメーターのセット
06以上	予約


+01 ステータス
コマンドの実行状況がこのバイトに格納されます。

ASTIステータスバイト
以下のように定義されます。
00h	Target service in progress
01h	Target service complete without error
02h	Target service aborted by host
04h	Target service complete with error
08h	Change SCSI bus phase
10h	SCSI attention detected
80h	Invalid target service request
81h	Invalid host adapter number
82h	Device not found


00h	Target service in progress
ドライバーはファンクションの実行中であることを示します。

01h	Target service complete without error
実行中のファンクションがエラーの発生を伴わずに終了したことを示します。

02h	Target service aborted by host
実行中のコマンドがホストにより中断されたことを示します。

04h	Target service complete with error
実行中のファンクションがエラーの発生を伴ない終了したことを示します。

08h	Change SCSI bus phase
SCSIバスのフェーズが変化したことを示します。

10h     SCSI attention detected
        イニシエータがＡＴＮをアサートしたことを示します。

80h	Invalid target service request
無効なファンクションが発行されたことを示します。

81h	invalid host adapter number
指定されたホストアダプタ番号が無効であることを示します。

82h	device not found
ホストアダプタが見つからないことを示します。


+02 ホストアダプター番号
マネージャーで管理されているSCSIホストアダプターの番号で０から始まる番号が割り
当てられます。通常はシステムにホストアダプタが1つしかないので０を指定します。


<ASTIコマンドコード　０	ホストアダプタの問い合わせ>

Offset	#Bytes	R/W	Description
00	01	W	コマンドコード (0)
01	01	R	ステータス
02	01	W	ホストアダプタ番号
03	02	R	拡張用に予約
05	02	R	ターゲットマネージャのバージョン
07	01	R	ホストアダプタのSCSI ID
08	10h	R	ターゲットマネージャID
18h	10h	R	ホストアダプタID

使用しようとしているドライバのバージョン、IDおよび、ホストアダプタの種類を
調べます。

ターゲットマネージャのバージョン
	1.00(100h)が格納される
ターゲットマネージャID、ホストアダプタID
	ESP406/FAS408用の本マネージャの場合次のIDがセットされる
	ターゲットマネージャID
		"DOS TGMSCSI 1.0 "
	ホストアダプタID
		"FXGA ON BOARD"



<ASTIコマンドコード　１	システム情報の取得>

Offset	#Bytes	R/W	Description
00	01	W	コマンドコード (0)
01	01	R	ステータス
02	01	W	ホストアダプタ番号
コマンドの実行状況の取得

このコマンドは現在実行中のコマンドの実行状況を調べます。


<ASTIコマンドコード　２	ターゲットI/Oリクエストの実行>

Offset	#Bytes	R/W	Description
00	01h	W	コマンドコード (02h)
01	01h	R	ステータス
02	01h	W	ホストアダプタ番号
03	01h	W	ターゲットコマンド番号


このコマンドにはターゲットコマンド番号で指定されるサブファンクションが存在しま
す。
先頭４バイトは共通です。

これらのサブファンクションにはSCSIのターゲットモードの動作に必要なものが集めら
れています。ターゲットモードのアプリケーションを実現する場合、主にこのコマンド
と、そのサブファンクションを使用します。

ファンクションを呼び出すとtimer関連をのぞき、ファンクションを呼び出してからそ
の処理が終了するまでユーザープログラムに処理は戻りません。
よって、ステータスはドライバーからユーザープログラムに制御が移った時点ですでに
セットされています。


<ターゲットコマンド番号0		Adaptor_init>
アダプターの初期化をおこなう

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (0)

ホストアダプターのハードウェアを初期化します。
ホストアダプターはリセットされます。
SCSIのRSTはアサート状態にはなりません。


<ターゲットコマンド番号1		SCSI_bus_reset>
SCSIバスのリセット

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (1)


SCSIのRSTをアサートします。
接続されるイニシエーターによってはターゲットがRSTをアサート状態にした場合、機能
の実行が困難になるものが存在します。
また、ドライバはこのファンクションが呼ばれても内部の初期化等はおこないません。
初期化はユーザーの責任でおこなう必要があります。

このファンクションは安易に呼び出すべきではありません。


<ターゲットコマンド番号2		SCSI_enable_select>
セレクションの許可

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (2)


セレクションを許可します。このコマンドを実行した場合、ホストアダプタは他のイニシエーターからのセレクション要求に答え、SCSIバスの論理的接続をおこないます。

セレクションが禁止のままだと外部のイニシエーターに対して論理的に切り離された状態となっており、セレクションはタイムアウトで終了します。


<ターゲットコマンド番号３	SCSI_disable_select>
セレクションの禁止

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (3)


セレクションを禁止します。このコマンドを実行しますとホストアダプタはSCSIバスから切り離され、他のイニシエーターからのセレクションの要求を受け付けなくなります。
ターゲットプログラムの終了時や、応答したくないときにコールします。

イニシエーターはセレクションをおこなうとタイムアウトで終了します。


<ターゲットコマンド番号４	SCSI_send_message>
メッセージの送出

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (4)
04	01h	W	SCSI MESSAGE	;out

+04	SCSI MESSAGE
	送出するメッセージ

SCSIバスのフェーズをMessage inフェーズに設定し、メッセージを送出します


<ターゲットコマンド番号５	SCSI_send_status	>
ステータスの送出

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (5)
04	01h	W	SCSI STATUS	;out

+04	SCSI STATUS
	送出するSCSIステータス

SCSIバスのフェーズをStatusフェーズに設定し、ステータスを送出します。


<ターゲットコマンド番号６	SCSI_receive_message>
メッセージの受領

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (6)
04	02h	R	Receive message length
06	02h		Data pointer(offset)
08	02h		Data pointer(segment)

+04	Receive message length
	受信するメッセージのデータ長

+06	Data pointer
	受信したメッセージを格納するメモリへのポインタ

メッセージを受信します。
コマンドを実行する場合、バスはMessage outフェーズである必要があります。
メッセージ受信後はBUS FREEフェーズに遷移します。


<ターゲットコマンド番号７	SCSI_recive_command>
コマンドの受信

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (7)
04	02h	W	Reserve
06	02h		Data pointer(offset)
08	02h		Data pointer(segment)
10	01h	R	Adapter STATUS
11	01h	R	Selection bus ID
12	01h	R	Identify message or null byte

+6 Data pointer
送信されてきたコマンドを格納します。
データ長はベンダーユニーク以外はCDBのグループで決定されます。
ベンダーユニークのコマンドでGROUP7は10バイトコマンドとして扱います。
それ以外は6バイトコマンドとして扱います。

+11 Selection bus ID
コマンドを送信してきたイニシエーターのIDが格納されます。

+12 Identify message or null byte
Commandフェーズに遷移するまえにメッセージが送信されてきた場合、そのメッセージが
格納されます。SCSI-2の規格ではIdentify messageが送信されてきますが、SCSI-1との
互換性維持のために、メッセージが送信されてこない場合もあります。
送信されてこない場合はこのフィールドには０が格納されます。

SCSIバスのフェーズをコマンドフェーズに遷移させ、コマンドを受信します。
このコマンドを呼び出すまえにサブファンクション20(scsi_get_selection)を呼び出
し、相手のIDとメッセージを前もって取得しておく必要があります。
これはコマンドフェーズの直前のフェーズでいろいろなメッセージが交換される場合
があり、それに対応する必要があるからです。それぞれのメッセージの処理が終了し
たら、ユーザープログラムはSCSIバスのフェーズがMessage Outフェーズではないこと
を確認後、本サブファンクションを呼び出します。

本ドライバのバージョンでは同期転送に対応していませんので、同期転送のメッセー
ジはユーザーがRejectする必要があります。
また、ドライバーで同期転送がサポートされた場合も使用するかどうかはユーザーにゆ
だねられます。


<ターゲットコマンド番号８	SCSI_bus_sense>
SCSIセレクション/リセットのセンス

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (8)
04	01h	R	SCSI PHASE	;return

+04 SCSI PHASE
	0x40	SCSI_TG_SEL
		イニシエーターからセレクションされたことを示します。
	0x20	SCSI_TG_SEL_ATN
		イニシエーターからATNがアサート状態でセレクションされたことを示
		します。通常のSCSI-2機器の場合はこの形態です。
	0x80	SCSI_TG_RESET
		SCSIバスがリセットされたことを示します。

他のイニシエーターからセレクションの要求があるかどうかを調べます。
また、SCSIバスのRSTがアサートされた場合はそれを通知します。
SCSIコマンドを処理するプログラムはまずこのコマンドでSCSIバスの状態を取得します。
セレクションの要求があった場合、その時点で初めてSCSIコマンド処理をおこないます。
セレクションが行われていない場合(BUS FREEまたは他のSCSI機器がSCSIバスを使用中
の場合)はセレクションの要求があるまでの時間がアイドルタイムになります。
事前にコマンド２(SCSI_enable_select)がコールされていない場合、セレクションの要
求があった場合でもこのコマンドではそれをセンスすることが出来ません。


<ターゲットコマンド番号９	SCSI_command_complete>
SCSIコマンド処理の終了

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (9)
04	01h	W	SCSI STATUS	;out
05	01h	W	SCSI MESSAGE	;out

+04	SCSI STATUS
	SCSIのSTATUS

+05	SCSI MASSAGE
	SCSIのMASSAGE

コマンドの処理の終了を通知します。
このコマンドを実行しますと、自動的にフェーズは遷移し、ステータスとメッセージを
送出し、Bus Freeフェーズに遷移します。
以下の順番で遷移します。

	Data In/Data Out/Commandフェーズ

	Statusフェーズ

	ステータスの送出

	Message Inフェーズ

	メッセージの送出

	Bus freeフェーズ


<ターゲットコマンド番号10	SCSI_send_data_esp>
データの送出

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (10)
04	02h	W	Data length
06	02h	W	Data pointer(offset)
08	02h	W	Data pointer(segment)
10	01h	R	Adapter STATUS

+04	Data length
	送出したいデータのバイト数

+06	Data pointer
	送出したいデータが格納されているメモリへのポインタ

データを送出します。転送サイズの１単位は１バイトです。
最大で65535バイトまで転送可能です

転送中にATNがアサート状態になった場合、転送は中止されます。
ユーザーはすみやかにMessage Outフェーズに遷移させ、メッセージを受信して下さい。
メッセージ受信後はBus Freeフェーズに遷移します。

注:ATNがアサート状態になってもすぐに転送は中止されません。
これは使用するハードウェアにもよりますがATNを検出するさい、ATNがアサート状態に
なった場合、直ちにそれを検出できるハードウェアとブロック単位でしか検出できない
ハードウェアがあり、さらに直ちに検出できてもブロック単位でしか転送が中断できな
いハードウェアもあります。本ファンクションは実際にはATNがアサートされ、データ
転送が中断できるところではじめて転送を中止します。


<ターゲットコマンド番号11	SCSI_send_complete>
データの送出の終了

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (11)

データの転送が完了した場合にこのファンクションを呼び出します。
通常は使用しません。


<ターゲットコマンド番号12	SCSI_send_block_esp>
データブロックの送出

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (12)
04	02h	W	Data length
06	02h	W	Data pointer(offset)
08	02h	W	Data pointer(segment)
10	01h	R	Adapter STATUS

+04	Data length
	送出したいデータのブロック数

+06	Data pointer
	送出したいデータが格納されているメモリーへのポインタ

データを送出します。転送サイズの１単位は2048バイトです。
最大で65535ブロック転送可能です。
このファンクションはブロック単位の転送を高速におこなうのが目的です。
ターゲットコマンド番号１０で転送サイズに2048を指定するのと本コマンドで転送サイ
ズに１を指定するのでは実行結果は同一となります。しかし、明確にブロック転送をお
こなう場合は明示的にこのファンクションを使うべきです。

転送中にATNがアサート状態になった場合、転送は中止されます。
ユーザーはすみやかにMessage Outフェーズに遷移し、メッセージを受信して下さい。
メッセージ受信後はBus Freeフェーズに遷移します。

注:ATNがアサート状態になってもすぐに転送は中止されません。
これは使用するハードウェアにもよりますがATNを検出するさい、ATNがアサート状態に
なった場合、直ちにそれを検出できるハードウェアとブロック単位でしか検出できない
ハードウェアがあり、さらに直ちに検出できてもブロック単位でしか転送が中断できな
いハードウェアもあります。本ファンクションは実際にはATNがアサートされ、データ
転送が中断できるところではじめて転送を中止します。


<ターゲットコマンド番号13	SCSI_receive_data_esp>
データの受信

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (13)
04	02h	W	Data length
06	02h	W	Data pointer(offset)
08	02h	W	Data pointer(segment)
10	01h	R	Adapter STATUS

+04	Data length
	受信したいデータのバイト数

+06	Data pointer
	受信したデータを格納するメモリへのポインタ

データを受信します。受信サイズの１単位は１バイトです。
受信するデータ量はCommandフェーズで設定された値と同一である必要があります。
データ量を少なく指定した場合、このコマンドを終了してもData outフェーズのまま
で、次のフェーズに遷移しません。
データ量を多く設定すると、コマンド終了前にSCSIのハンドシェークが停止してしま
います。
最大で65535バイトまで受信可能です。

転送中にATNがアサート状態になった場合、転送は中止されます。
ユーザーはすみやかにMessage Outフェーズに遷移し、メッセージを受信して下さい。
メッセージ受信後はBus Freeフェーズに遷移します。


<ターゲットコマンド番号14	SCSI_receive_complete>
データ受信の完了

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (14)

データの受信が完了した場合にこのファンクションを呼び出します。
通常は使用しません。


<ターゲットコマンド番号15		SCSI_receive_block_esp>
データブロックの受信

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (15)
04	02h	W	Data length
06	02h	W	Data pointer(offset)
08	02h	W	Data pointer(segment)
10	01h	R	Adapter STATUS

+04	Data length
	受信したいデータのブロック数

+06	Data pointer
	受信したデータを格納するメモリーへのポインタ

データを受信します。転送サイズの１単位は2048バイトです。
最大で65535ブロック受信可能です。受信したデータを格納するメモリのサイズは要求
されたブロックサイズ×2048バイト以上確保されている必要があります。

このファンクションはブロック単位の受信を高速におこなうのが目的です。
ターゲットコマンド番号13で受信サイズに2048を指定するのと本コマンドで受信サイズ
に１を指定するのでは実行結果は同一となります。しかし、明確にブロック受信をおこ
なう場合は明示的にこのファンクションを使うべきです。

転送中にATNがアサート状態になった場合、転送は中止されます。
ユーザーはすみやかにMessage Outフェーズに遷移し、メッセージを受信して下さい。
メッセージ受信後はBus Freeフェーズに遷移します。


<ターゲットコマンド番号16	SCSI_disconnect>
SCSIバスの切り離し

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (16)

SCSIバスを切り離します。
すべての信号がネゲート状態になります。




<ターゲットコマンド番号19	SCSI bus phase>
SCSIバスのフェーズの取得

Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (19)
04	01h	R	SCSI PHASE	;return

+04	SCSI PHASE
	0x00	Data Out
	0x01	Data In
	0x02	Command
	0x03	Status
	0x04	ANSI reserved
	0x05	ANSI reserved
	0x06	Message Out
	0x07	Message In

SCSIバスのフェーズを取得します。
このコマンドは主にセレクションの処理に使用します。
このコマンドはバスのフェーズを調べるだけで、他のファンクションには影響しません。


<ターゲットコマンド番号20	SCSI get selection>
Get selection phase information

セレクションの相手のIDの取得
Offset	#Bytes	R/W	Description
00	01h	W	command number (02h)
01	01h	R	Status
02	01h	W	Host adapter number
03	01h	W	Target command number (20)
04	01h	R	Selection bus ID
05	01h	R	message or null byte

+04	Selection bus ID
	セレクションしたイニシエーターのID
+05	message or null byte
	SelectionフェーズにつづくMessage Outフェーズで送信されるメッセージ

セレクションの相手のIDを取得します。ATNがアサートした状態でセレクションされた
場合、バスはMessage outフェーズに遷移し、自動的にメッセージを受信します。
通常このメッセージはIdentify messageであり、ユーザープログラムがこのメッセージ
に問題がない場合、そのままCommandフェーズに遷移します。
ユーザーはそのことをコマンド19で確認後、コマンドを受信して下さい。
イニシエーターがその他のメッセージの送信要求をしてくる場合もあります。
その場合はメッセージを受信後、必要に応じて処理を継続して下さい。




<SCSI state diagram>

例　READ 10
READ 10の処理では以下の処理が含まれています。
	1.セレクション
	2.メッセージの処理
	3.コマンド受信
	4.データ送出
	5.ステータスの送出
	6.メッセージの送出

1.セレクション
SCSI_bus_senseコマンド(8)を使用します。
セレクションされていない場合はアイドルループとなります。

2.メッセージの処理
　 SCSI_get_selectionコマンド(20)を使用し、メッセージの内容確認をおこないます。
セレクションフェーズ直後のメッセージアウトフェーズで送られてくる最初のメッセ
ージ(通常はIdentify message)は自動的に受信されます。
ATNがアサート状態のままでメッセージアウトフェーズがつづく場合、
メッセージのやり取りはSCSI_send_message、 SCSI_recive_messageコマンドを使用
し、送られてきたメッセージに対応します。

3.コマンドの処理
　 SCSI_bus_phaseコマンドを使用し、バスがcommandフェーズに遷移しているのを確認
したらSCSI_recive_commandコマンドを使用し、CDBを受信します。
　CDBを受信しましたらそのコマンドの処理をします。

4.データの送出
　SCSI_send_data_espコマンドやSCSI_send_block_espコマンドを使用し、CDBで要求さ
れたデータをイニシエーターに転送します。
これらのコマンドの実行中にSCSIバスのATNがアサート状態になりますと、データ転送
は中断されます。
　ユーザープログラムはそれを監視し、Message outフェーズに遷移させる必要があり
ます。 SCSI_recive_messageコマンドを使用します。
　メッセージ処理が終了しましたら、必要に応じてBus freeフェーズに遷移させます。 
SCSI_disconnectファンクションでバスは切り離されます。

5.ステータスの送出

6.メッセージの送出
最後にSCSI_command_completeコマンドあるいはSCSI_send_statusコマンドとSCSI_send_
messageコマンドを使用し、コマンド処理を終了させます。


